package sbt.eclipse;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.ClasspathContainerInitializer;
import org.eclipse.jdt.core.IClasspathContainer;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
/**
*
* @author Francisco Treacy
*
*/
public class SbtClasspathContainerInitializer extends ClasspathContainerInitializer {
public SbtClasspathContainerInitializer() {}
@Override
public void initialize(IPath containerPath, IJavaProject project) throws CoreException {
SbtClasspathContainer container = new SbtClasspathContainer(containerPath, project);
updateClasspathContainer(containerPath, project, container);
}
@Override
public void requestClasspathContainerUpdate(IPath containerPath, IJavaProject project, IClasspathContainer containerSuggestion) throws CoreException {
updateClasspathContainer(containerPath, project, containerSuggestion);
}
private void updateClasspathContainer(IPath containerPath, IJavaProject project, IClasspathContainer container) throws JavaModelException {
JavaCore.setClasspathContainer(containerPath, new IJavaProject[] { project }, new IClasspathContainer[] { container }, null);
/*
if (JavaCore.getClasspathContainer(containerPath, project) == null) {
IClasspathEntry[] entries = project.getRawClasspath();
IClasspathEntry newEntry = JavaCore.newContainerEntry(containerPath);
IClasspathEntry[] n = new IClasspathEntry[entries.length + 1];
n[0] = newEntry;
System.arraycopy(entries, 0, n, 1, entries.length);
project.setRawClasspath(n, null);
JavaCore.setClasspathContainer(containerPath, new IJavaProject[] { project }, null, null);
} */
}
@Override
public boolean canUpdateClasspathContainer(IPath containerPath, IJavaProject project) {
return true;
}
}